## 类和对象

灵魂是一切由对象去完成，面向对象编程

先有对象，再根据对象抽象出属性和方法

class关键字 类名

属性+函数

访问权限：public、private、protected、friend

没指定访问权限，默认private

```c++
#include<iostream>
using namespace std;

class People
{
public:
	void hello()
	{
		cout << "hello";
	}
};

int main()
{
	int a;
	People p;
	cin >> a;
	cout << a <<endl;
	p.hello();
	return 0;
}
```

```c++
#include<iostream>
using namespace std;

class Aminal
{
	string name;
public:
	Aminal(string a)
	{
		name = a;
	}
	
	~Aminal() 
	{
		cout << "6"<<endl;
	}
	
	string Name()
	{
		return name;
	}
};

int main()
{	
	Aminal a("鸽子");
	cout << a.Name()<<endl;
	a.~Aminal();
	return 0;
}
```

## 继承

从父类（基类）继承属性和函数

子类（派生类）通过继承可以提高开发效率

class 父类

class 子类：public 父类

只能继承protect和public的成员，构造函数和析构函数无法继承

```c++
class Cat :public Aminal
{
public:
	Cat(string n) :Aminal(n)
	{
		cout << n << endl;
	}
	~Cat() {}
    string Name()
	{
		return name;
	}
};

int main()
{	
	Cat c("猫");
    cout << c.Name() << endl;
	return 0;
}
```
## 多态

多种形态

父类继承多个子类，子类各不相同，形成多态

父类定义指针，指向父类对象或某些子类对象，该指针表现出多态

多态在编译期间无法确定，只能在运行中才能确定为哪个子类行为

构成多态前提：要有继承，要有重写